常用的端口掃描手段包括:
TCP connect掃描:這種類型也稱為開放掃描,它是最傳統的掃描技術,程序調用connect()將套接口函數連接到目標端口,形成完整的TCP三次握手過程,能夠成功建立連接的目標端口就是開放的。在UNIX下使用這種掃描方式不需要任何權限,而且它的掃描速度非常快,可以同時使用多個套接口進行連接來加快掃描速度。不過由于它不存在隱蔽性,所以不可避免地要被目標主機記錄下連接信息和錯誤信息或者被防護系統拒絕。
TCP SYN掃描:這種類型也稱為半開放式掃描(half-open scanning),原理是往目標端口發送一個SYN分組,若得到來自目標端口返回的SYN/ACK響應包,則目標端口開放,若得到RST響應,則目標端口未開放。在UNIX下執行這種掃描必須擁有root權限。由于它并未建立完整的TCP三次握手過程,很少會有操作系統記錄到,因此比TCP connect掃描隱蔽得多。
TCP FIN掃描:根據RFC 793文檔,程序向一個目標端口發送FIN分組,若此端口開放,則此包將被忽略,否則將返回RST分組。這是某些操作系統TCP實現存在的缺陷,并不是所有的操作系統都存在這個缺陷,所以它的準確率不高,而且此方法往往只能在UNIX上成功工作,因此這種方法不算特別流行,不過它的好處在于足夠隱蔽。
TCP Reverse-ident掃描:根據RFC 1413文檔,ident協議是一種確認用戶連接到自己的協議,允許通過TCP連接得到進程所有者的用戶名,即使該進程不是連接發起方。此方法可用于得到FTP所有者信息,以及其他需要的信息,等等。
TCP Xmas Tree掃描:根據RFC 793文檔,程序往目標端口發送一個FIN、URG和PSH分組,若其關閉,應該返回一個RST分組。
TCP NULL掃描:根據RFC 793文檔,程序往目標端口發送一個沒有任何標志位的TCP包,如果目標端口是關閉的,將返回一個RST數據包。
TCP ACK掃描:這種掃描技術往往用來探測防火墻的類型,根據ACK位的設置情況可以確定該防火墻是簡單的包過濾還是狀態檢測機制的防火墻。
TCP窗口掃描:由于TCP窗口大小報告方式不規則,這種掃描方法可以檢測一些類UNIX系統(AIX、FreeBSD等)打開的端口以及是否過濾的端口。
TCP RPC掃描:UNIX系統特有的掃描方式,可以用于檢測和定位遠程過程調用(Remote Procedure Call,RPC)端口及其相關信息。
UDP ICMP端口不可達掃描:此方法利用UDP本身是無連接的協議,所以一個打開的UDP端口不會返回任何響應包。不過如果目標端口關閉,某些系統將返回ICMP PORT UNREACH信息。但是由于UDP是不可靠的非面向連接協議,所以這種掃描方法也容易出錯,而且還比較慢。
分片掃描:這是其他掃描方式的變形體,可以在發送一個掃描數據包時,通過將TCP包頭分為幾段,放入不同的IP包中,使得一些包過濾程序難以對其進行過濾,因此這個辦法能繞過一些包過濾程序。
FTP跳轉掃描:根據RFC 959文檔,FTP協議支持代理(Proxy),可以連上提供FTP服務的服務器A,然后讓A向目標主機B發送數據。若需要掃描B的端口,可以使用PORT命令,聲明B的某個端口是開放的。若此端口確實開放,FTP服務器A將返回150和226信息,否則返回錯誤信息:“425 Can’t build data connection:Connection refused”。這種方式的隱蔽性很不錯,在某些條件下也可以突破防火墻進行信息采集,缺點是速度比較慢。
回答所涉及的環境:聯想天逸510S、Windows 10。
常用的端口掃描手段包括:
TCP connect掃描:這種類型也稱為開放掃描,它是最傳統的掃描技術,程序調用connect()將套接口函數連接到目標端口,形成完整的TCP三次握手過程,能夠成功建立連接的目標端口就是開放的。在UNIX下使用這種掃描方式不需要任何權限,而且它的掃描速度非常快,可以同時使用多個套接口進行連接來加快掃描速度。不過由于它不存在隱蔽性,所以不可避免地要被目標主機記錄下連接信息和錯誤信息或者被防護系統拒絕。
TCP SYN掃描:這種類型也稱為半開放式掃描(half-open scanning),原理是往目標端口發送一個SYN分組,若得到來自目標端口返回的SYN/ACK響應包,則目標端口開放,若得到RST響應,則目標端口未開放。在UNIX下執行這種掃描必須擁有root權限。由于它并未建立完整的TCP三次握手過程,很少會有操作系統記錄到,因此比TCP connect掃描隱蔽得多。
TCP FIN掃描:根據RFC 793文檔,程序向一個目標端口發送FIN分組,若此端口開放,則此包將被忽略,否則將返回RST分組。這是某些操作系統TCP實現存在的缺陷,并不是所有的操作系統都存在這個缺陷,所以它的準確率不高,而且此方法往往只能在UNIX上成功工作,因此這種方法不算特別流行,不過它的好處在于足夠隱蔽。
TCP Reverse-ident掃描:根據RFC 1413文檔,ident協議是一種確認用戶連接到自己的協議,允許通過TCP連接得到進程所有者的用戶名,即使該進程不是連接發起方。此方法可用于得到FTP所有者信息,以及其他需要的信息,等等。
TCP Xmas Tree掃描:根據RFC 793文檔,程序往目標端口發送一個FIN、URG和PSH分組,若其關閉,應該返回一個RST分組。
TCP NULL掃描:根據RFC 793文檔,程序往目標端口發送一個沒有任何標志位的TCP包,如果目標端口是關閉的,將返回一個RST數據包。
TCP ACK掃描:這種掃描技術往往用來探測防火墻的類型,根據ACK位的設置情況可以確定該防火墻是簡單的包過濾還是狀態檢測機制的防火墻。
TCP窗口掃描:由于TCP窗口大小報告方式不規則,這種掃描方法可以檢測一些類UNIX系統(AIX、FreeBSD等)打開的端口以及是否過濾的端口。
TCP RPC掃描:UNIX系統特有的掃描方式,可以用于檢測和定位遠程過程調用(Remote Procedure Call,RPC)端口及其相關信息。
UDP ICMP端口不可達掃描:此方法利用UDP本身是無連接的協議,所以一個打開的UDP端口不會返回任何響應包。不過如果目標端口關閉,某些系統將返回ICMP PORT UNREACH信息。但是由于UDP是不可靠的非面向連接協議,所以這種掃描方法也容易出錯,而且還比較慢。
分片掃描:這是其他掃描方式的變形體,可以在發送一個掃描數據包時,通過將TCP包頭分為幾段,放入不同的IP包中,使得一些包過濾程序難以對其進行過濾,因此這個辦法能繞過一些包過濾程序。
FTP跳轉掃描:根據RFC 959文檔,FTP協議支持代理(Proxy),可以連上提供FTP服務的服務器A,然后讓A向目標主機B發送數據。若需要掃描B的端口,可以使用PORT命令,聲明B的某個端口是開放的。若此端口確實開放,FTP服務器A將返回150和226信息,否則返回錯誤信息:“425 Can’t build data connection:Connection refused”。這種方式的隱蔽性很不錯,在某些條件下也可以突破防火墻進行信息采集,缺點是速度比較慢。
回答所涉及的環境:聯想天逸510S、Windows 10。